基于嵌入式控制器的远程监控系统的开发
1 引言
在仪器仪表迅速发展的同时,计算机和网络技术也在迅速发展,PC机已经从高速增长进入到平稳发展时期,单纯由PC机带领电子产业蒸蒸日上的时代己经成为历史,嵌入式系统的出现和广泛应用,使计算机和网络进入了后PC时代。基于嵌入式智能仪表远程监控系统作为工业控制网络重要发展方向之一,是工业数据通讯与控制网络技术、互联网技术等多种技术共同发展的结果[1]。该项技术的发展与成熟将会给人们的生产生活带来深远的影响。
2 嵌入式控制器硬件设计
控制器的定义:嵌入式控制器以高速处理器为核心,由高速处理器和其他芯片协同工作来控制的电子设备或装置,能够完成监视、控制等各种自动化处理任务[4]。嵌入式控制器是系统的核心部分。
2.1 系统硬件结构图
嵌入式控制器的系统硬件结构图见图1所示。由5V、3.3V和1.8V二种直流电源供电。系统主要由DSP芯片TMS320C5402、256K FLASH存储器、以太网接口芯片RTL8019AS、 A/D转换芯片、串口芯片等组成。 从嵌入式控制器的系统硬件结构图以看出嵌入式控制器是嵌入式远程监控系统的关键部分。现场智能仪器仪表可以通过嵌入式控制器的模拟量和数字量接口输入信号,由控制器内嵌的服务程序,通过以太网或Modem,在远程由客户端程序对现场智能仪表进行信号的查看和控制,从而实现智能仪表的远程监控。 2.2 处理器DSP 5402最小系统设计 (1)复位电路。同时设计上电复位电路和人工复位电路,当系统运行中出现故障时可方便地人工复位。复位电路一方面应确保复位低电平时间足够长,保证DSP可靠复位;另一方面应保证稳定性良好,防止DSP误复位。复位电路采用MAX706R芯片组成自动复位电路。MAX706R是一种能与具有3.3V工作电压的DSP芯片相匹配的自动复位芯片。该芯片的具体接法如图2所示。 (2)时钟电路。一般DSP系统中经常使用外部时钟输入,因为使用外部时钟时,时钟的精度高,稳定性好,使用方便。由于DSP工作是以时钟为基准,如果时钟质量不高,那么系统的可靠性、稳定性就很难保证。因此,本系统拟采用外部时钟源提供时钟,如图3所示。将外部的时钟信号直接加到DSP芯片的X2/CLKIN引脚,X1引脚悬空。设置CLKMEI=1,CLKMD2=1,CLKMD3=1。复位后使DSP芯片的时钟为外部晶振频率的1/2,即2分频。
图3 时钟电路 (3)系统电源设计。TMS320VC5402芯片采用双电源供电,DSP的核内电压和I/O接口电压分别为1.8V和3.3V, 本系统需要三种电源,电压为5V、3.3V和1.8V。其中,RTL8019AS网卡芯片和模数转换电路均采用5V电源供电。DSP的双电源解决方案采用TPS73HD318实现,输入的电源电压为5V,输出电压分别为3.3V和1.8V,每路电源的最大输出电流为750mA。 2.3 程序存储器的扩展 FLASH存储器与EPROM相比,具有更高的性能价格比,而且体积小、功耗低、可电擦写、使用方便,并且3.3V的FLASH可以直接与DSP芯片连接。因此,采用FLASH作为程序存储器存储程序和一些固定数据是一种比较好的选择。本系统的程序存储器选用了一片AT29LV020 FLASH存储器。此芯片有256K×8的存储空间,最快读取速度为100ns。所以在读取程序时,要使主频低于10MHz。 2.4 接口电路设计 (1)模拟量输入接口。模拟量输入通道采用了TI公司生产的TLV2544芯片,当与DSP芯片连接时,可用一个帧同步信号FS来控制一个串行数据帧的开始。采用TMS320VC5402提供高速、双向、多通道带缓冲串行端口MCBSP,可用来与串行A/D转换器直接连接。 (2)以太网扩展接口。实现嵌入式智能仪表的远程监控系统,首要的问题就是要让智能仪表具有以太网接口。台湾Realtek公司生产的RTL8019AS以太网接口芯片可以让嵌入式控制器具有通用计算机的网络接口。 (3)RS-232串行接口设计。RS-232-C并未定义连接器的物理特性,因此存在DB-25, DB-15和DB-9等多种类型的连接器。DSP为了同现场智能仪表的串口相连,我们用MAXIM公司的MAX3111来完成EIA到TTL电路之间的电平和逻辑关系的转换。 (4)RS-485串行通信接口。RS-485是为了适应远距离、分布式控制系统的需要而制定的一种串行通信总线标准。它支持多节点、远距离传输。RS-485标准采有用平衡式发送,差分式接收的数据收发器来驱动总线。为了扩展终端连接设备的数量,本设计增加了RS-485接口。DSP与RS-485串口的连接使用MAXIM公司的MAX3140UART通信芯片来完成。 3 嵌入式TCP/IP协议设计 3.1总体数据流设计 嵌入式TCP/IP的总体数据流图如图4所示。
应用程序通过Socket应用编程接口使用TCP/IP协议栈提供的数据通讯功能[3]。发送数据时,如果选择的是面向连接的TCP协议,则应用程序将用户数据交给TCP协议模块处理,TCP模块将其首部和数据封装成TCP报文段;如果选择的是无连接的UDP协议,则将用户数据交给UDP协议模块处理,UDP模块将其首部和数据封装成UDP数据报。然后将封装好的TCP报文段或UDP数据报交给IP协议模块,IP模块在TCP报文段或UDP数据报上添加IP首部,并封装成IP数据包,然后根据路由表为IP数据包确定路由;找到了路由则将数据包发送到网络接口层,网络接口层判断发送的数据是从以太网接口还是从异步串口发出,如果是从以太网接口发出,则要利用ARP协议找到目的IP地址对应的物理地址,然后封装成以太网帧,由网卡驱动程序将以太网帧发送出去。 3.2 总体数据结构 TCP通过一个数据结构为每个TCP连接协调发送、接收和重发动作,该数据结构称作TCP传输控制块TCB。TCP为每个活跃的连接保留一个TCB,TCB中包含了有关TCP连接的所有信息,包括连接端点的地址和端口号,当前平均往返时间的估计值,发送或接收的数据,是否需要确认或重传,以及一组有关该连接的使用情况的统计数据,所以TCB较大,本设计对TCB进行了简化,只保留了用于控制面向连接的数据收发所必需的基本信息。 用于UDP协议的数据收发控制块UTCB包含了UDP端结点的所有信息:外部和本地IP地址、外部和本地端口号以及其它控制信息。UTCB的使用及分配与TCB完全一样,只是因为UDP不需要建立连接,所以只要有数据进行发送,则立即分配UTCB,一旦数据发送完成,则释放该UTCB。 4 嵌入式控制器软件设计 根据系统的控制要求和编程的需要,将系统软件的模块划分如下部分,共分六个模块,分别是主控模块、初始化模块、协议封装模块、协议拆包重组模块、网络接口模块和应用层应用模块。图5分别是各模块之间的逻辑关系。
(1)主控模块设计。主控模块中通常包含一些变量的定义和函数的调用。另外一些重要的I/O端口定义也放在主控函数中。在主控模块中定义了延时信号函数、端口设置函数、同步串口设置函数、中断服务函数等。系统工作时程序从主控模块的main()函数开始运行,首先是调用DSP及RTL8019AS的初始化程序,完成初始化之后,主程序以一个无条件循环进入工作状态。 (2)初始化模块设计。系统软件在运行的时候首先要调用初始化程序,对系统的各资源进行初始化,然后才能正常工作。初始化模块包括了四个初始化函数,分别是net_init()、dsp5402_init()、interrupt_init()、nic_atl_init()。 (3)协议封装模块设计。协议封装部分的作用是将数据进行分组,并以不同的协议打包封装使其成为符合TCP/IP协议规范的分组数据。在设计中,对于不同协议的封装,分别由不同的函数实现。在本系统中,监控终端系统需要对位于网络层的IP协议、位于传输层的TCP协议进行封装。封装顺序是先传输层协议TCP封装,后网络层协议IP封装。之后传入网络接口模块发送出去。 (4)协议拆包重组模块设计。本模块的工作过程是这样的,数据从以太网上被接收下来之后,首先会放在网卡芯片的片上内存当中,由DSP即网络接口模块将其读入后<
图1 嵌入式控制器系统硬件结构图
图2 系统自动复位电路
图4 嵌入式TCP/IP的总体数据流图
图5软件系统模块之间的关系
提交
超越传统直觉,MATLAB/Simulink助力重型机械的智能化转型
新大陆自动识别精彩亮相2024华南国际工业博览会
派拓网络被Forrester评为XDR领域领导者
智能工控,存储强基 | 海康威视带来精彩主题演讲
展会|Lubeworks路博流体供料系统精彩亮相AMTS展会